const app = getApp()

Page({
  data: {
    // 广告轮播
    banners: [
      {
        id: 1,
        imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg',
        type: 'product',
        linkId: 1
      },
      {
        id: 2,
        imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg',
        type: 'activity',
        linkId: 2
      },
      {
        id: 3,
        imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg',
        type: 'product',
        linkId: 3
      }
    ],
    
    // 分类导航
    categories: [
      { id: 1, name: '女装', icon: '/images/icons/category1.png' },
      { id: 2, name: '男装', icon: '/images/icons/category2.png' },
      { id: 3, name: '童装', icon: '/images/icons/category3.png' },
      { id: 4, name: '鞋包', icon: '/images/icons/category4.png' },
      { id: 5, name: '配饰', icon: '/images/icons/category5.png' },
      { id: 6, name: '美妆', icon: '/images/icons/category6.png' },
      { id: 7, name: '家居', icon: '/images/icons/category7.png' },
      { id: 8, name: '数码', icon: '/images/icons/category8.png' },
      { id: 9, name: '食品', icon: '/images/icons/category9.png' },
      { id: 10, name: '全部', icon: '/images/icons/category10.png' }
    ],
    
    // 新品上市
    newProducts: [
      { id: 1, name: '2023春季新款时尚连衣裙', price: 199, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 2, name: '新款休闲百搭牛仔外套', price: 259, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 3, name: '时尚高跟鞋春季新款', price: 299, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 4, name: '新款韩版时尚单肩包', price: 179, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' }
    ],
    
    // 特价优惠
    specialOffers: [
      { id: 5, name: '气质淑女连衣裙', specialPrice: 99, originalPrice: 299, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 6, name: '休闲男士T恤', specialPrice: 69, originalPrice: 129, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 7, name: '纯棉亲肤内衣套装', specialPrice: 89, originalPrice: 159, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 8, name: '时尚百搭休闲鞋', specialPrice: 129, originalPrice: 259, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' }
    ],
    
    // 秒杀商品
    seckillProducts: [
      { id: 9, name: '限量版联名T恤', seckillPrice: 99, originalPrice: 299, soldPercentage: 85, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 10, name: '设计师品牌包袋', seckillPrice: 399, originalPrice: 1299, soldPercentage: 60, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 11, name: '限量高端香水', seckillPrice: 199, originalPrice: 699, soldPercentage: 75, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' }
    ],
    
    // 秒杀倒计时
    countdown: {
      hours: '02',
      minutes: '45',
      seconds: '36'
    },
    
    // 人气热卖
    hotProducts: [
      { id: 12, name: '经典款牛仔裤', price: 199, salesCount: 2543, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 13, name: '春季新款卫衣', price: 159, salesCount: 1893, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 14, name: '时尚休闲运动鞋', price: 299, salesCount: 3201, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' },
      { id: 15, name: '百搭小白鞋', price: 239, salesCount: 1587, imageUrl: 'https://img01.yzcdn.cn/vant/cat.jpeg' }
    ],
    
    // 优惠券
    coupons: [
      { id: 1, name: '新人专享券', amount: 20, minSpend: 199, validityPeriod: '2023.12.31前有效', isClaimed: false },
      { id: 2, name: '全场通用券', amount: 50, minSpend: 399, validityPeriod: '2023.12.31前有效', isClaimed: false },
      { id: 3, name: '服装品类券', amount: 100, minSpend: 599, validityPeriod: '2023.12.31前有效', isClaimed: false }
    ],
    
    // 是否显示回到顶部按钮
    showBackToTop: false
  },

  onLoad: function() {
    // 可以在这里从云数据库获取数据
    this.loadBanners()
    this.loadCategories()
    this.loadNewProducts()
    this.loadSpecialOffers()
    this.loadSeckillProducts()
    this.loadHotProducts()
    this.loadCoupons()
    
    // 加载云数据库中的产品
    this.loadProductsFromCloud()
    
    // 启动秒杀倒计时
    this.startCountdown()
  },
  
  onShow: function() {
    // 每次页面显示时检查购物车状态和用户登录状态
    if (app.globalData.isLogin) {
      // 获取用户的优惠券领取状态
      this.checkCouponStatus()
    }
  },
  
  onPageScroll: function(e) {
    // 控制回到顶部按钮显示
    this.setData({
      showBackToTop: e.scrollTop > 300
    })
  },
  
  // 从云数据库加载数据的方法
  loadBanners: function() {
    // 从云数据库获取轮播图数据
    const db = wx.cloud.database();
    
    db.collection('banners')
      .orderBy('sort', 'asc')  // 按照排序字段升序排序
      .get()
      .then(res => {
        console.log('成功获取轮播图数据:', res.data);
        if (res.data && res.data.length > 0) {
          this.setData({
            banners: res.data
          });
        } else {
          console.log('云数据库暂无轮播图数据，使用默认数据');
        }
      })
      .catch(err => {
        console.error('获取轮播图数据失败:', err);
      });
  },
  
  loadCategories: function() {
    console.log('加载分类数据')
  },
  
  loadNewProducts: function() {
    // 从云数据库加载新品上市产品
    const db = wx.cloud.database();
    
    // 先显示加载状态
    wx.showLoading({
      title: '加载新品...',
    });
    
    // 获取云数据库中的产品，按创建时间排序，获取最新的商品
    db.collection('products')
      .orderBy('createTime', 'desc') // 如果有创建时间字段，按创建时间倒序排列
      .limit(6) // 获取前6条数据
      .get()
      .then(res => {
        console.log('成功获取新品上市数据:', res.data);
        if (res.data && res.data.length > 0) {
          // 格式化数据以适应现有UI
          const newProducts = res.data.map(item => {
            return {
              id: item._id,
              name: item.name,
              price: item.price,
              imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
            };
          });
          
          this.setData({
            newProducts: newProducts
          });
        } else {
          console.log('云数据库暂无新品数据，使用默认数据');
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('直接获取新品上市数据失败，尝试使用云函数:', err);
        
        // 如果直接查询失败，尝试使用云函数获取
        wx.cloud.callFunction({
          name: 'getLatestProducts',
          data: {
            limit: 6
          }
        }).then(res => {
          if (res.result && res.result.success && res.result.data.length > 0) {
            console.log('通过云函数获取新品成功:', res.result.data);
            
            // 格式化数据以适应现有UI
            const newProducts = res.result.data.map(item => {
              return {
                id: item._id,
                name: item.name,
                price: item.price,
                imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
              };
            });
            
            this.setData({
              newProducts: newProducts
            });
          } else {
            console.log('云函数未返回新品数据，使用默认数据');
          }
          wx.hideLoading();
        }).catch(cloudErr => {
          console.error('云函数获取新品失败:', cloudErr);
          wx.hideLoading();
        });
      });
  },
  
  loadSpecialOffers: function() {
    // 从云数据库中加载特价商品数据
    const db = wx.cloud.database();
    const _ = db.command;
    
    // 先显示加载状态
    wx.showLoading({
      title: '加载特价商品...',
    });
    
    console.log('开始查询特价商品');
    
    // 查询有特价字段的商品 - 简化查询条件
    db.collection('products')
      .where({
        specialPrice: _.exists(true) // 只要有特价字段即可
      })
      .limit(4) // 获取4个特价商品
      .get()
      .then(res => {
        console.log('成功获取特价优惠数据:', res.data);
        if (res.data && res.data.length > 0) {
          // 手动过滤，确保只选择specialPrice < price的商品
          const filteredProducts = res.data.filter(item => 
            item.specialPrice < item.price
          );
          
          console.log('过滤后的特价商品:', filteredProducts);
          
          // 格式化数据以适应现有UI
          const specialOffers = filteredProducts.map(item => {
            return {
              id: item._id,
              name: item.name,
              specialPrice: item.specialPrice,
              originalPrice: item.price,
              imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
            };
          });
          
          this.setData({
            specialOffers: specialOffers.length > 0 ? specialOffers : this.data.specialOffers
          });
          
          // 保存到本地存储，方便调试
          wx.setStorageSync('specialOffers', specialOffers);
        } else {
          console.log('云数据库暂无特价商品数据，使用默认数据');
          // 保持原有的默认数据
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('直接获取特价优惠数据失败，尝试使用云函数:', err);
        console.error('错误详情:', JSON.stringify(err));
        
        // 如果直接查询失败，尝试使用云函数获取
        wx.cloud.callFunction({
          name: 'getSpecialOffers',
          data: {
            limit: 4
          }
        }).then(res => {
          console.log('云函数返回结果:', res);
          if (res.result && res.result.success && res.result.data && res.result.data.length > 0) {
            console.log('通过云函数获取特价商品成功:', res.result.data);
            
            // 格式化数据以适应现有UI
            const specialOffers = res.result.data.map(item => {
              return {
                id: item._id,
                name: item.name,
                specialPrice: item.specialPrice,
                originalPrice: item.price,
                imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
              };
            });
            
            this.setData({
              specialOffers: specialOffers
            });
            
            // 保存到本地存储，方便调试
            wx.setStorageSync('specialOffersFromCloud', specialOffers);
          } else {
            console.log('云函数未返回特价商品数据，使用默认数据');
            console.log('云函数返回结果:', JSON.stringify(res));
          }
          wx.hideLoading();
        }).catch(cloudErr => {
          console.error('云函数获取特价商品失败:', cloudErr);
          console.error('详细错误:', JSON.stringify(cloudErr));
          wx.hideLoading();
          
          // 显示错误提示
          wx.showToast({
            title: '加载特价商品失败',
            icon: 'none'
          });
        });
      });
  },
  
  loadSeckillProducts: function() {
    // 从云数据库中加载秒杀商品数据
    const db = wx.cloud.database();
    const _ = db.command;
    
    // 先显示加载状态
    wx.showLoading({
      title: '加载秒杀商品...',
    });
    
    console.log('开始查询秒杀商品');
    
    // 获取所有商品，然后在代码中过滤出有秒杀价格的商品
    db.collection('products')
      .limit(20) // 获取更多商品，以便过滤
      .get()
      .then(res => {
        console.log('获取到商品总数:', res.data.length);
        console.log('商品数据示例:', res.data.length > 0 ? res.data[0] : '无数据');
        
        if (res.data && res.data.length > 0) {
          // 手动过滤出具有seckillPrice字段的商品
          const seckillProducts = res.data.filter(item => 
            item.seckillPrice !== undefined && item.seckillPrice !== null
          );
          
          console.log('找到秒杀商品数量:', seckillProducts.length);
          console.log('秒杀商品示例:', seckillProducts.length > 0 ? seckillProducts[0] : '无秒杀商品');
          
          if (seckillProducts.length > 0) {
            // 格式化数据以适应现有UI
            const formattedProducts = seckillProducts.slice(0, 6).map(item => {
              // 计算已售百分比，如果没有相关字段则使用模拟数据
              const soldCount = item.soldCount || 0;
              const stock = item.stock || 0;
              const totalStock = soldCount + stock;
              const soldPercentage = totalStock > 0 ? Math.floor((soldCount / totalStock) * 100) : 70; // 默认70%
              
              return {
                id: item._id,
                name: item.name,
                seckillPrice: item.seckillPrice,
                originalPrice: item.price,
                soldPercentage: soldPercentage,
                imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
              };
            });
            
            this.setData({
              seckillProducts: formattedProducts
            });
            
            // 保存到本地存储，方便调试
            wx.setStorageSync('seckillProducts', formattedProducts);
          } else {
            console.log('没有找到秒杀商品，保留默认数据');
          }
        } else {
          console.log('云数据库暂无商品数据，使用默认数据');
          // 保持原有的默认数据
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('获取秒杀商品数据失败:', err);
        console.error('错误详情:', JSON.stringify(err));
        wx.hideLoading();
        
        // 显示错误提示
        wx.showToast({
          title: '加载秒杀商品失败',
          icon: 'none'
        });
      });
  },
  
  loadHotProducts: function() {
    // 从云数据库中加载热卖商品数据
    const db = wx.cloud.database();
    
    // 先显示加载状态
    wx.showLoading({
      title: '加载热卖商品...',
    });
    
    console.log('开始查询热卖商品');
    
    // 先检查商品字段结构
    db.collection('products')
      .limit(1)
      .get()
      .then(sample => {
        console.log('商品结构示例:', sample.data.length > 0 ? sample.data[0] : '无数据');
        
        // 查询所有商品，手动排序
        return db.collection('products')
          .limit(20) // 获取较多商品以便排序
          .get();
      })
      .then(res => {
        console.log('获取商品总数:', res.data.length);
        
        if (res.data && res.data.length > 0) {
          // 手动按销量排序
          const sortedProducts = res.data.sort((a, b) => {
            const soldCountA = a.soldCount || 0;
            const soldCountB = b.soldCount || 0;
            return soldCountB - soldCountA; // 降序排列
          });
          
          console.log('热卖商品排序结果:', sortedProducts.slice(0, 4).map(item => ({
            id: item._id,
            name: item.name,
            soldCount: item.soldCount || 0
          })));
          
          // 格式化数据以适应现有UI
          const hotProducts = sortedProducts.slice(0, 4).map(item => {
            return {
              id: item._id,
              name: item.name,
              price: item.specialPrice || item.price, // 如果有特价就显示特价
              salesCount: item.soldCount || 0,
              imageUrl: item.images && item.images.length > 0 ? item.images[0] : 'https://img01.yzcdn.cn/vant/cat.jpeg'
            };
          });
          
          this.setData({
            hotProducts: hotProducts
          });
          
          // 保存到本地存储，方便调试
          wx.setStorageSync('hotProducts', hotProducts);
        } else {
          console.log('云数据库暂无热卖商品数据，使用默认数据');
          // 保持原有的默认数据
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('获取热卖商品数据失败:', err);
        console.error('错误详情:', JSON.stringify(err));
        wx.hideLoading();
        
        // 显示错误提示
        wx.showToast({
          title: '加载热卖商品失败',
          icon: 'none'
        });
      });
  },
  
  loadCoupons: function() {
    console.log('加载优惠券数据')
  },
  
  checkCouponStatus: function() {
    // 检查用户已领取的优惠券
    console.log('检查优惠券领取状态')
  },
  
  // 秒杀倒计时
  startCountdown: function() {
    let that = this
    // 设置结束时间为当天23:59:59
    const now = new Date()
    const endTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59).getTime()
    
    this.countdownTimer = setInterval(function() {
      const nowTime = new Date().getTime()
      const diff = endTime - nowTime
      
      if (diff <= 0) {
        // 倒计时结束，重新设置明天的倒计时
        clearInterval(that.countdownTimer)
        that.setData({
          countdown: {
            hours: '00',
            minutes: '00',
            seconds: '00'
          }
        })
        // 重新开始明天的倒计时
        setTimeout(function() {
          that.startCountdown()
        }, 1000)
        return
      }
      
      // 计算剩余的时分秒
      const hours = Math.floor(diff / (1000 * 60 * 60))
      const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))
      const seconds = Math.floor((diff % (1000 * 60)) / 1000)
      
      // 更新倒计时显示
      that.setData({
        countdown: {
          hours: hours < 10 ? '0' + hours : hours,
          minutes: minutes < 10 ? '0' + minutes : minutes,
          seconds: seconds < 10 ? '0' + seconds : seconds
        }
      })
    }, 1000)
  },
  
  // 搜索
  goToSearch: function() {
    wx.navigateTo({
      url: '/pages/search/search'
    })
  },
  
  // 轮播图点击
  onBannerTap: function(e) {
    const { id, type } = e.currentTarget.dataset
    
    if (type === 'product') {
      // 跳转到商品详情
      wx.navigateTo({
        url: `/pages/product/product?id=${id}`
      })
    } else if (type === 'activity') {
      // 跳转到活动页面
      wx.navigateTo({
        url: `/pages/activity/activity?id=${id}`
      })
    }
  },
  
  // 分类点击
  navigateToCategory: function(e) {
    const { id } = e.currentTarget.dataset
    wx.switchTab({
      url: `/pages/category/category?id=${id}`
    })
  },
  
  // 查看更多点击
  navigateToList: function(e) {
    const { type } = e.currentTarget.dataset
    wx.navigateTo({
      url: `/pages/product-list/product-list?type=${type}`
    })
  },
  
  // 点击商品进入详情页
  goToProductDetail: function(e) {
    const { id } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/pages/product/product?id=${id}`
    });
  },
  
  // 导航到指定商品ID
  navigateToProduct: function(e) {
    const { id } = e.currentTarget.dataset;
    
    // 如果是测试商品ID，则使用指定ID
    if (id === 'test') {
      wx.navigateTo({
        url: `/pages/product/product?id=5be31a71680a42b901cab82c70635438`
      });
      return;
    }
    
    // 商品ID可能是普通ID或云数据库ID(_id)
    wx.navigateTo({
      url: `/pages/product/product?id=${id}`
    });
  },
  
  // 添加到购物车
  addToCart: function(e) {
    const { id } = e.currentTarget.dataset
    
    // 检查用户是否登录
    if (!app.globalData.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再操作',
        confirmText: '去登录',
        success (res) {
          if (res.confirm) {
            wx.switchTab({
              url: '/pages/profile/profile'
            })
          }
        }
      })
      return
    }
    
    // 将商品添加到购物车
    const cartList = app.globalData.cartList
    
    // 查找该商品是否已在购物车中
    const existIndex = cartList.findIndex(item => item.id === id)
    
    if (existIndex > -1) {
      // 已存在，数量+1
      cartList[existIndex].quantity += 1
    } else {
      // 不存在，获取商品信息并添加到购物车
      // 实际项目中应该从数据库获取完整商品信息
      const product = this.findProductById(id)
      if (product) {
        cartList.push({
          ...product,
          quantity: 1,
          selected: true
        })
      }
    }
    
    // 更新全局购物车
    app.globalData.cartList = cartList
    
    // 显示添加成功提示
    wx.showToast({
      title: '添加成功',
      icon: 'success'
    })
  },
  
  // 领取优惠券
  claimCoupon: function(e) {
    const { id } = e.currentTarget.dataset
    
    // 检查用户是否登录
    if (!app.globalData.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再领取优惠券',
        confirmText: '去登录',
        success (res) {
          if (res.confirm) {
            wx.switchTab({
              url: '/pages/profile/profile'
            })
          }
        }
      })
      return
    }
    
    // 更新优惠券状态
    const coupons = this.data.coupons
    const index = coupons.findIndex(item => item.id === id)
    
    if (index > -1) {
      coupons[index].isClaimed = true
      this.setData({
        coupons
      })
      
      // 实际项目中应该将优惠券领取记录保存到云数据库
      // wx.cloud.callFunction({
      //   name: 'claimCoupon',
      //   data: {
      //     couponId: id
      //   }
      // })
      
      wx.showToast({
        title: '领取成功',
        icon: 'success'
      })
    }
  },
  
  // 回到顶部
  backToTop: function() {
    wx.pageScrollTo({
      scrollTop: 0,
      duration: 300
    })
  },
  
  // 辅助方法：通过id查找商品
  findProductById: function(id) {
    // 在所有商品列表中查找
    const allProducts = [
      ...this.data.newProducts,
      ...this.data.specialOffers,
      ...this.data.seckillProducts,
      ...this.data.hotProducts,
      ...(this.data.cloudProducts || []) // 添加云数据库产品
    ]
    
    for (let product of allProducts) {
      if (product.id === id || product._id === id) { // 同时检查id和_id
        // 处理特价商品和秒杀商品的价格
        if (product.specialPrice !== undefined) {
          product.price = product.specialPrice
        } else if (product.seckillPrice !== undefined) {
          product.price = product.seckillPrice
        }
        
        return product
      }
    }
    
    return null
  },
  
  // 生命周期函数
  onHide: function() {
    // 页面隐藏时可以做一些清理工作
  },
  
  onUnload: function() {
    // 页面卸载时清除倒计时定时器
    if (this.countdownTimer) {
      clearInterval(this.countdownTimer)
    }
  },
  
  onPullDownRefresh: function() {
    // 下拉刷新
    this.loadBanners()
    this.loadCategories()
    this.loadNewProducts()
    this.loadSpecialOffers()
    this.loadSeckillProducts()
    this.loadHotProducts()
    this.loadCoupons()
    
    // 停止下拉刷新
    wx.stopPullDownRefresh()
  },
  
  onReachBottom: function() {
    // 上拉加载更多，首页可能不需要
  },
  
  onShareAppMessage: function() {
    // 用户点击右上角分享
    return {
      title: '时尚商城',
      path: '/pages/index/index',
      imageUrl: this.data.banners[0].imageUrl
    }
  },
  
  // 加载云数据库中的所有产品
  loadProductsFromCloud: function() {
    const db = wx.cloud.database();
    wx.showLoading({
      title: '加载产品...',
    });
    
    // 获取云数据库中的所有产品
    db.collection('products')
      .orderBy('soldCount', 'desc') // 按销量排序，如果没有这个字段则按默认排序
      .limit(10) // 每次最多获取10条
      .get()
      .then(res => {
        console.log('成功获取云数据库产品:', res.data);
        if (res.data && res.data.length > 0) {
          // 格式化数据，确保数据结构一致
          const cloudProducts = res.data.map(item => {
            return {
              ...item,
              // 确保有图片路径
              images: item.images || [],
              // 如果没有销售数量，设置为0
              soldCount: item.soldCount || 0,
              // 确保链接到正确的ID
              id: item._id
            };
          });
          
          this.setData({
            cloudProducts: cloudProducts
          });
        } else {
          console.log('云数据库暂无产品数据');
          // 设置为空数组确保UI不会出错
          this.setData({
            cloudProducts: []
          });
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('获取云数据库产品失败:', err);
        // 出错时也要清除加载状态
        wx.hideLoading();
        // 通知用户
        wx.showToast({
          title: '加载产品失败',
          icon: 'none'
        });
      });
  },
}) 